#! /usr/bin/env python
# -*- coding: utf-8 -*-


"""
 *
 * - Ime
 *
 *  - kratki opis
 *
 * Autori: Koki007
 * Verzija: 0.1
 * Datum: 02.02.2011
 *
"""

import pygame

# tajmer klasa - odbrojava vrijeme u milisekundama, metoda azuriraj vrati True kada odbroji zadano vrijeme
# trajanje - je vrijeme kako dugo ce odbrojavati
# petlja - ako je True tajmer ce nakon sto odbroji pocet ispocetka odbrajati, ako je False prestane dalje brojati
class cTajmer:

    def __init__(self, trajanje, petlja = 0):
        self.pocetno_vrijeme = pygame.time.get_ticks()
        self.trajanje = trajanje # u milisekundama
        self.petlja = petlja
        self.broji = 1
        pass

    # azuriraj - mora se redovito pozivati ako se zeli da tajmer precizno mjeri
    def azuriraj(self):
        if self.broji and (self.pocetno_vrijeme + self.trajanje <= pygame.time.get_ticks()):
            if self.petlja: self.pocetno_vrijeme = pygame.time.get_ticks()
            else: self.broji = 0
            return 1
        return 0

    # provjeri da li tajmer broji
    def je_aktivan(self):
        if self.broji: return 1
        else: return 0

    #pokreni tajmer
    def pokreni(self):
        self.broji = 1
        self.pocetno_vrijeme = pygame.time.get_ticks()

    #vraca koliko je vremena proteklo od aktiviranja (ili pocetka nove petlje)
    def je_proteklo_vremena(self):
        return pygame.time.get_ticks() - self.pocetno_vrijeme

    #vraca koliko posto vremena (u odnosu na zadano vrijeme) je proteklo od aktiviranja (ili pocetka nove petlje)
    def je_proteklo_posto_vremena(self):
        proteklo_vremena = pygame.time.get_ticks() - self.pocetno_vrijeme
        return float(proteklo_vremena) / self.trajanje * 100.0

    # postavi trajanje tajmera
    def postavi_vrijeme(self, trajanje):
        self.trajanje = trajanje # u milisekundama

    # ovime se provjerava je li timer u petlji (kad zavrsi da li ponovo pocne brojiti)
    def je_u_petlji(self, petlja):
        self.petlja = petlja


# klasa u koju se mogu dodati funkcije sa argumentima koje se pokrenu nakon odredenog vremena
class cTask_tajmer:

    def __init__(self):
        self.lista_taskova = [] 
        pass
    
    def azuriraj(self):
        for task in self.lista_taskova:
            if task[0].azuriraj():
                task[1](*task[2])
        pass

    def dodaj_task(self, vrijeme, petlja, funkcija, *args):
        tajmer = cTajmer(vrijeme, petlja)
        self.lista_taskova.append([tajmer, funkcija, args])
        pass
